DjangoCongress JP 2021
参加し、発表しました。
感想
オフラインイベント楽しい。
疲れたのが楽しい。
会場の反応があるのが楽しい。
他の参加者との雑談が楽しい。
楽しい。
わざわざ遠くまで行くのが楽しい。
首痛い楽しい。
オナカスイタ楽しい。
WiFi制限楽しい。
朝
9:45 会場入り
名札、イベントシール、検温、消毒、緊急連絡先登録、1テーブル1名 ... アフターコロナのイベント、って感じだ!
https://scrapbox.io/files/60e21d992fee44001dc97b63.png
https://scrapbox.io/files/60e21da49b5113001c6483b6.png
https://scrapbox.io/files/60e21db2af404b001c77139e.png
https://scrapbox.io/files/60e21dbacc7585002292d0de.png
Django 3.2 ASGI対応 - こわくない asyncio 基礎とasync viewの使い所 10:25 ~ 11:05
スライド
https://scrapbox.io/files/60e05e423ca238001c0e6816.png
「初めてのオフライン参加、浮かれてます!」ww
shimizukawa.iconオフラインイベント、トーク中のちょっとした冗談で、会場から「クスクス」って微かに聞こえてくるとめっちゃ安心する... なにこの安心感..
「ちょっと分かりにくいので、レストランに例えさせてください」
shimizukawa.icon分かりやすい!しかしイラストや、なんでもあるなー
RLSを用いたマルチテナント実装 for Django 11:15 ~ 11:55
スライド:
https://scrapbox.io/files/60dfbf265c48270022527806.png
shimizukawa.icon久しぶりのオフライン登壇で浮かれてます!(ステージから参加者のみなさんをパチリ)
https://scrapbox.io/files/60e21df21ee9370023d3e6ef.png
shimizukawa.icon開始2分前に「ちょっと出演してもらえる?」と @kashew_nuts に依頼して出てもらいました https://scrapbox.io/files/60e21cefa579160022642924.png
shimizukawa.iconしまった、自分のデモのときにDebugToolbarでSQLを見せるの忘れてた!·
「RLSを使っているとき、DjangoAdminの表示時にWHERE句にはテナントIDでの絞り込み等ないですよ」というデモをし忘れました(´・ω・`)
https://scrapbox.io/files/60e21c7e2845e200236588ee.png
お昼休憩 / Lunch 11:45 ~ 13:15
サインさせていただきました~
『エキスパートPythonプログラミング 改訂2版』『自走プログラマー』『独学プログラマー』わいわい
https://scrapbox.io/files/60dfe70c1911470022143e47.png
蕎麦!
https://scrapbox.io/files/60dfef87e559dd002322d221.png
https://scrapbox.io/files/60dfef5bbd416900222183cc.png
長野オリンピック セントラルスクゥエア in 長野市, 長野県
https://scrapbox.io/files/60dfef494899c5001c71dc2f.png
https://scrapbox.io/files/60dfe5d0ab2764001c9b21f7.png
Djangoでのプロジェクトだって型ヒントを運用出来る! 13:15 ~ 13:55
スライド:
https://scrapbox.io/files/60dfe93f0ba7e1001c59356e.png
「models.QuerySet[Post] のように特定モデルの型のQuerySetを型指定できます」
shimizukawa.icon なるほどー
「ビジネスロジックがviewとmodelに変則的に散らばっていて、処理を追うのが大変」
shimizukawa.iconわかる。ちょうわかる。
「親和性が悪い、と知識が不足していた当時は思ってたが、今回の発表で調べているうちに解決した」
shimizukawa.iconこれが発表する醍醐味のひとつだよね。人に伝えようとすると自分の知識が強化される。
ボーイスカウト・ルール「キャプキャンプ場を汚したのが自分でなくても、来たときよりもきれいにしてからその場を去る」
shimizukawa.iconいいな。
Django管理サイトをカスタマイズする前に教えてほしかったこと 14:05 ~ 14:45
スライド:
https://scrapbox.io/files/60dfef0b8940560020e421e5.png
shimizukawa.icon 今日初めてのオンライン登壇!スクリーンに映し出されるZoom画面(with チャット)
https://scrapbox.io/files/60dff0f5df3b27001c741bd2.png
一昔前なら、ライブビューイングがこんな感じだったなあ
AdminSiteを使ったカスタマイズ例
admin.site.site_header を書き換える
shimizukawa.iconへーー、これは知らなかった
shimizukawa.iconDjangoAdminはほぼデフォルトで使ってたけど、改めてみると多機能だしけっこう複雑だなあ
コードが断片化しやすくテストがしづらい
lxmlとSeleniumでテスト
shimizukawa.iconDjangoAdminをlxmlで検証!?っていうかPython 2.5 時代のアイコン懐かしいな!
https://scrapbox.io/files/60dff8bc4bea6e0023efd544.png
「DjangoAdminが便利なのは分かった、しかし日本語情報が少ない、なにか良い本がないものか・・・」
「『現場で使えるDjango管理サイトのつくり方』という本を書きました」
いい流れw
フォトセッション
https://scrapbox.io/files/60e21ee05d5f9e001c860809.pnghttps://scrapbox.io/files/60e21ee8d91645001c2a9753.png
未経験者のDjangoでの個人開発 15:15 ~ 15:45
スライド:
https://scrapbox.io/files/60e00102f16612001e483d0e.png
おまえ誰よ
haru, 17歳、N高等学校(2年)
shimizukawa.icon17歳・・・!めちゃくちゃしっかりしてる
shimizukawa.icon発表内容がすばらしすぎる.. TwitterのTLが賞賛の嵐
https://scrapbox.io/files/60e007a1a90c5900220d36cc.pnghttps://scrapbox.io/files/60e007c1bd6d63001cf7b989.png
質疑応答
Q. 自分を振り返ってつぎに繋いでいるのがすごいと思ったけど、普段からそういうことを意識していますか?
A. 小さい頃からスポーツをしていて、同学年と比べるんじゃなく先輩と比較して、先輩はこれくらい出来ているけど自分はこれくらいなのはなぜか?を見て変えていくことをしていたので、それがプログラミングに生きたのかと思います
Q. 本があったとして、どうゆう本があったら助かったか?本やるときにおさえてほしいか?
A. ネットでDjangoのmodelsの書き方はわかったが、クリーンアーキテクチャを実践するならどうやったらいいか。モジュール分割での命名は?など知りたかった。
Q. python-social-auth、Twitterのリダイレクトで躓いたがどうだったか?
A. Dockerを入れてて、callbackの設定がアドレス127.0.0.1でダメで...というので躓いた。にらめっこしてて気づかなかったので、エンジニアの人に聞いて解決した。実際に質問するときに情報に気づくことが多かった。
Q. Djangoを触り始めたのがつい最近なので似たような立場として興味本位での質問です。今後Djangoで学びたいことなどはありますか?
A. 設計まわりで、共同開発するときに他の人に入ってもらいやすくするにはどうするか、といったことを考えてます。時間があれば機械学習の方にも挑戦してみたいと思います。
https://scrapbox.io/files/60e21c23f8d4c1001c279569.png
Securing Django Web Applications 15:55 ~ 16:25
by Gajendra Deshpande
スライド:
https://scrapbox.io/files/60e0231bb87536001cc03e66.png
shimizukawa.icon"Securing Django Web Applications" あとでスライドじっくり読もう... Djangoのセキュリティのまとめ、ちょう助かる
shimizukawa.icon認証クラックの対策の一番目は MFA 利用かー。もうMFA避けられない時代だなあ
shimizukawa.icon"Customize error messages to hide sensitive information" Djangoが出すメッセージならセンシティブなのは出さないだろう、という思い込みがあったなー
shimizukawa.iconあとで、ちょっとやってみようかな。IPAのチェックシートと突き合わせて見たら面白そう
Django & Celery in production 16:35 ~ 17:05
スライド:
https://scrapbox.io/files/60e01485bd6d63001cf7c756.png
https://scrapbox.io/files/60e21be4315673001c7d7416.png
タスクキューの用語集
Task, Queue, Producer, Broker, Consumer
shimizukawa.icon説明が丁寧
大きいタスクがworkerを占有するとキューが詰まっちゃう
shimizukawa.iconあるあるー
リトライ設計、非同期処理には大事。ここまで整理したことなかったな。「リトライタイミングを指数関数的なタイミングにする、ランダムでずらす」ランダムなるほど
shimizukawa.icon「リトライ設計」「ログ保存」「Celery 4.0からtask protocolがversion2に」「Flowerで監視するとTask状況が可視化される」このトーク資料、Celery使う時は要チェックだ!(あとで思い出せるようにツイートしておく作戦)
理解して使いこなすDjangoのForm機能 17:15 ~ 17:45
スライド:
https://scrapbox.io/files/60e216481c5f8b001c428940.png
shimizukawa.iconこのDjango Formのトークも、資料的価値が高い...!なんとなく知ってる情報、知らなかった情報、があるので備忘録によいな。初めて触れる人に教えるときにもよさそう。資料公開希望~
クロージング / Closing 17:55 ~ 18:15
日本システム技研さん、スポンサーありがとうございました!
https://scrapbox.io/files/60e027ee64f676001c726803.png
ジャンケン大会
akiyokoさん提供の本
shimizukawa から提供の本
https://scrapbox.io/files/60e216a8315673001c7d722b.png
スタッフ写真
https://scrapbox.io/files/60e21e861ee9370023d3e6f3.png
ほんと、 COVID-19 対策でスタッフは準備大変だったよね。安全に配慮した準備、ありがとうございました!